package com.xuan.service;

import com.nimbusds.jose.JOSEException;
import com.nimbusds.jose.jwk.RSAKey;
import com.xuan.entity.PayloadDto;

import java.text.ParseException;

public interface JwtTokenService {


    /**
     * 使用HMAC算法生成token
     */
    String generateTokenByHMAC(String payloadStr, String secret) throws JOSEException;

    /**
     * 使用HMAC算法校验token
     */
    PayloadDto verifyTokenByHMAC(String token, String secret) throws ParseException, JOSEException;


    /**
     * 获取默认payload
     */
    PayloadDto getDefaultPayloadDto();

    /**
     * @description:  获取默认的RSAKey 读取公钥证书jwt.jks文件
     * @param
     * @return: com.nimbusds.jose.jwk.RSAKey
     * @author Lenovo
     * @date: 2021/7/22 13:42
     */
    RSAKey getDefaultRSAKey();

    /**
     * 使用RSA算法生成token
     */
    String generateTokenByRSA(String payloadStr, RSAKey rsaKey) throws JOSEException;

    /**
     * 使用RSA算法校验token
     */
    PayloadDto verifyTokenByRSA(String token, RSAKey rsaKey) throws ParseException, JOSEException;



}
